#ifndef MUSIC_TASK_H
#define MUSIC_TASK_H
#include "main.h"
#include "FreeRTOS.h"
#include "stm32f4xx_hal_gpio.h"

/***************声调宏定义******************/

#define  proport          45000 	//Tclk/(arr+1)=90000000/(1000)

//根据Tout= ((arr+1)*(psc+1))
#define  L1       ((proport/262)-1)//中调　do 的频率
#define  L2       ((proport/296)-1)//中调　re 的频率
#define  L3       ((proport/330)-1)//中调　mi 的频率
#define  L4       ((proport/349)-1)//中调　fa 的频率
#define  L5       ((proport/392)-1)//中调　sol的频率
#define  L6       ((proport/440)-1)//中调　la 的频率
#define  L7       ((proport/494)-1)//中调　si 的频率

#define  M1       ((proport/523)-1)//高调　do 的频率
#define  M2       ((proport/587)-1)//高调　re 的频率
#define  M3       ((proport/659)-1)//高调　mi 的频率
#define  M4       ((proport/699)-1)//高调　fa 的频率
#define  M5       ((proport/784)-1)//高调　sol的频率
#define  M6       ((proport/880)-1)//高调　la 的频率
#define  M7       ((proport/988)-1)//高调　si 的频率

#define  H1       ((proport/1048)-1)//高调　do 的频率
#define  H2       ((proport/1176)-1)//高调　re 的频率
#define  H3       ((proport/1320)-1)//高调　mi 的频率
#define  H4       ((proport/1480)-1)//高调　fa 的频率
#define  H5       ((proport/1640)-1)//高调　sol的频率
#define  H6       ((proport/1760)-1)//高调　la 的频率
#define  H7       ((proport/1976)-1)//高调　si 的频率

#define  Z0       0//

/*****************************************/
/**************用户自定义灯*****************/
#define USER_LED1_ON()  HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_RESET)
#define USER_LED1_OFF() HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_SET)
#define USER_LED2_ON()  HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_RESET);
#define USER_LED2_OFF() HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_SET);
/*****************************************/

typedef enum
{
    CLOSE_MODE = 0,
    OPEN_MODE  = 1,
    AUTO_MODE  = 2,
    STOP_MODE  = 3,
    ERROR_MODE = 4,
}eMODE;

extern void music_task(void const *pvParameters);
void music_task_Init(void);
void rc_music(void);
void close_Beep(void);
void open_Beep(void);
void auto_Beep(void);
void stop_Beep(void);
void error_Beep(void);

#endif